package br.com.medvagas.web.mb.p;

import java.io.Serializable;
import java.util.Collections;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.AjaxBehaviorEvent;
import javax.faces.model.SelectItem;

import br.com.medvagas.comum.entidade.Especialidade;
import br.com.medvagas.comum.entidade.Profissao;
import br.com.medvagas.comum.entidade.UsuarioProfissional;
import br.com.medvagas.comum.entidade.Vaga;
import br.com.medvagas.comum.entidade.VagaUsuarioProfissional;
import br.com.medvagas.comum.entidade.VagaUsuarioProfissionalPK;
import br.com.medvagas.comum.entidade.vo.VOConsultaVaga;
import br.com.medvagas.comum.util.CacheSelectItem;
import br.com.medvagas.comum.util.UtilJSF;
import br.com.medvagas.comum.util.UtilSpring;
import br.com.medvagas.negocio.facade.p.IManterProfissional;

@ManagedBean
@ViewScoped
public class PesquisarVagaMB implements Serializable {
	private static final long serialVersionUID = 1L;
	
	private Vaga vaga;
	private List<VOConsultaVaga> lsVaga;

	private List<SelectItem> lsProfissao;
	private List<SelectItem> lsEspecialidade;
	
	private Integer indexVaga;
	private String mensagem;
	private Double pretensaoSalarial;
	
	public PesquisarVagaMB() {
		vaga = new Vaga();
		vaga.setIdProfissao(1);
		lsProfissao = CacheSelectItem.get(Profissao.class.getName());
		lsEspecialidade = CacheSelectItem.get(vaga.getIdProfissao() + Especialidade.class.getName());
	}
	
	public String exibir() {
		lsVaga = null;
		return "pesquisarvaga";
	}

	public void onchangeProfissao(AjaxBehaviorEvent event) {
		if (vaga.getIdProfissao() != null) {
			lsEspecialidade = CacheSelectItem.get(vaga.getIdProfissao() + Especialidade.class.getName());
		} else {
			vaga.setIdEspecialidade(null);
			lsEspecialidade = Collections.emptyList();
		}
	}
	
	public String pesquisar() {
		UsuarioProfissional up = UtilJSF.getUsuarioProfissionalLogado();
		IManterProfissional mp = (IManterProfissional) UtilSpring.getBean(IManterProfissional.NOME);
		lsVaga = mp.pesquisarVaga(vaga, up.getIdUsuarioProfissional());
		return null;
	}
	
	public String candidatar() {
//		int index = Integer.parseInt(UtilJSF.getParameter("index"));
		UsuarioProfissional up = UtilJSF.getUsuarioProfissionalLogado();
		
		VagaUsuarioProfissionalPK pk = new VagaUsuarioProfissionalPK();
		VOConsultaVaga vaga = lsVaga.get(indexVaga);
		pk.setIdVaga(vaga.getIdVaga());
		pk.setIdUsuarioProfissional(up.getIdUsuarioProfissional());
		
		VagaUsuarioProfissional vup = new VagaUsuarioProfissional();
		vup.setId(pk);
		vup.setMensagem(mensagem);
		vup.setPretensaoSalarial(pretensaoSalarial);
		
		IManterProfissional mp = (IManterProfissional) UtilSpring.getBean(IManterProfissional.NOME);
		mp.candidatar(vup);
		
		vaga.setCandidatado(true);
		
		return null;
	}

	public Vaga getVaga() {
		return vaga;
	}
	public void setVaga(Vaga vaga) {
		this.vaga = vaga;
	}
	public List<VOConsultaVaga> getLsVaga() {
		return lsVaga;
	}
	public String getMensagem() {
		return mensagem;
	}
	public void setMensagem(String mensagem) {
		this.mensagem = mensagem;
	}
	public Double getPretensaoSalarial() {
		return pretensaoSalarial;
	}
	public void setPretensaoSalarial(Double pretensaoSalarial) {
		this.pretensaoSalarial = pretensaoSalarial;
	}
	public Integer getIndexVaga() {
		return indexVaga;
	}
	public void setIndexVaga(Integer indexVaga) {
		this.indexVaga = indexVaga;
	}
	public List<SelectItem> getLsProfissao() {
		return lsProfissao;
	}
	public List<SelectItem> getLsEspecialidade() {
		return lsEspecialidade;
	}
	
}
